package com.idez.taskcontrol.jsf.beans;

import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.faces.bean.ManagedBean;
import javax.inject.Inject;

import com.idez.androiddelphi.model.Usuario;
import com.idez.androiddelphi.model.UsuarioDAO;

@ManagedBean(name="usuarioBean")
@ConversationScoped
public class UsuarioBean implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@EJB
	private UsuarioDAO usuarioDAO;
	
	@Inject
	private Conversation conversation;
	
	private Usuario usuario;
	
	public UsuarioBean(){
		this.usuario = new Usuario();
	}
	
	public String novo(){
		
		this.usuario.setAtivo(true);
		return "cadastroUsuario";
	}
	
	public Usuario getUsuario(){
		return usuario;
	}
	
	public void setUsuario(Usuario usuario){
		this.usuario = usuario;
	}
	
	public List<Usuario> getUsuarios(){
		return usuarioDAO.listar();
	}
	
	public String cadastrarUsuario(){
		System.out.println("tentando cadastrar: " + usuario.getNome() + " id: " + usuario.getId().toString()+ " ativo: " + usuario.isAtivo());
		if (usuario.getId() == 0) {
			usuario.setId(null);
		}
		usuarioDAO.salvar(usuario);
		return "listarUsuarios?faces-redirect=true";
	}
	
	public String editarUsuario(){
		usuarioDAO.editar(usuario);
		if(!conversation.isTransient()){
			conversation.end();
		}
		return "usuarioEditadoSucesso";
	}
	
	public String removerUsuario(Usuario u){
		usuarioDAO.excluir(u);
		return null;
	}
	
	public String preparaEdicao(Usuario usuarioAEditar){
		if(conversation.isTransient()){
			this.conversation.begin();
		}
		this.usuario = usuarioAEditar;
		return "editarUsuario?faces-redirect=true";
	}
	
}
